Information Technology (IT) management has become an increasingly complex task for a large organization. There may be thousands of users (e.g. employees) carrying their own individual endpoint devices (e.g. laptops, workstations, smart phones, tablet computers, etc.) and each device may have an abundance of software and applications that are operating on the device. Some of these applications are unique to each individual user, while others are identical across several devices or at least share some of the same components (e.g. files, registry entries, data). Users generally want the freedom to install whatever software and applications they choose while IT departments are faced with the need to maintain compliance and data protection across this complex ecosystem. For example, a typical IT department today needs to be able to manage, secure and deliver applications to users, distribute software updates, as well as be able to back up and restore any user's data and settings on demand. One particular requirement for managing applications on such a large scale is being able to remotely add or remove applications on an individual computing device from a central location and to do so across numerous devices.
There exist a number of software solutions, sometimes referred to as “application capture” systems that attempt to aid organizations in creating application packages. For example, the System Center Configuration Manager (SCCM) available from Microsoft Corporation; the LANDESK Management Suite (LDMS) available from LANDESK Software; and the Client Management Suite (CMS) available from Symantec Corporation; all take different approaches in assisting an IT administrator in application management, including in some cases providing an application package that could be delivered to end user devices. Such conventional solutions for the capture, delivery and management of applications often leverage recording technologies during the application installation. This generally means that each application must first be installed separately on a dedicated clean staging machine, which could be a virtual machine or a physical computer. For example, one type of process for capturing an application first records the state of the system on the staging machine prior to installing an application (i.e. captures a pre-installation snapshot) and then records the state of the system again after the application has been installed (i.e. captures a post-installation snapshot). Based on comparing the pre-installation snapshot and post-installation snapshot, the system is able to compute a delta that indicates which files and registry entries were added, removed, and modified during the installation process. This delta can presumably then be used to determine which components (files, registry entries, etc.) actually comprise the application so that a package containing those components can be created. Such a package can then be delivered to multiple endpoint devices from a central location by the administrator, where it can be merged onto each endpoint device.
However, the type of process mentioned above suffers from a number of shortcomings. One limitation of such conventional application capture systems is that they typically require a recording of the pre-installation state, which is not always available. For example, many applications are installed on endpoint devices by the users themselves, who frequently obtain the application from third party sources. While the IT department would like to be able to manage such applications, it may not have the version of the application available to be able create an application package for it. Another inherent difficulty in trying to create an application package using conventional capture systems stems from the large numbers of users, devices and types of software that are involved. Organizations may reach inventories with thousands or even tens of thousands of applications, each of which would require a significant investment in time and resources to capture if a conventional capture process were to be used for each individual application. Many organizations are intimidated by the amount of work and resources they will need to invest in order to start managing the applications. At the same time, those which are willing to perform all the required manual work to capture applications soon find out that this is an on-going never-ending process, since for every new version of an application the administrator needs to re-capture the application and repeat the process.
Another source of inefficiency stems from the tight coupling between the operating system (OS) and the applications installed on the endpoint computing device. With conventional application installations, the files and registry entries that are needed by the application are added to various locations, without any clear delineation of which components comprise which application. Thereafter, to remove an application, an uninstall process needs to be followed to ensure that all of the previously added components are removed from all the various locations. This makes adding and removing applications on a computing device difficult in some cases, especially when doing so remotely, without user input. Additional difficulties arise when the IT department wishes to migrate some or all of the endpoint devices to a new version of the operating system (OS). If the IT department has many versions of applications for the previous OS, an administrator would either need to ensure that all of those managed applications are compatible with the new version of the OS or create new versions of the managed applications for the new OS. Moreover, the applications would need to be somehow migrated or re-deployed onto the endpoint devices. With certain operating systems, the upgrade process of the OS may try to preserve the applications that are already present on the device. However, this is usually performed without regard to whether the application is a user-installed application or an application managed by the IT department and the applications are preserved automatically, without enabling the user to select which applications he/she may wish to migrate and which can be discarded during the migration. In light of all of these shortcomings, more efficient and robust system is needed for managing applications on user endpoint devices.